package com.itfitness.licenseocrdemo.utils;

import android.hardware.Camera;
import com.itfitness.licenseocrdemo.bean.CameraSizeBean;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @ProjectName: LicenseOcr
 * @Package: com.itfitness.licenseocr.utils
 * @ClassName: SortCameraSizeUtil
 * @Description: java类作用描述 对CameraSize进行排序工具类
 * @Author: 作者名
 * @CreateDate: 2021/4/4 17:55
 * @UpdateUser: 更新者：itfitness
 * @UpdateDate: 2021/4/4 17:55
 * @UpdateRemark: 更新说明：
 * @Version: 1.0
 */
public class SortCameraSizeUtil {
    /**
     * 返回宽高比差值最小的Size
     * @param sizes 系统支持的Camera的Size
     * @param showViewRatio 当前自定义的相机控件展示的宽高的比值
     * @return
     */
    public static Camera.Size getCameraSize(List<Camera.Size> sizes,double showViewRatio){
        ArrayList<CameraSizeBean> sortSizeBeans = new ArrayList<>();
        for (Camera.Size size : sizes) {
            if(size != null){
                //获取当前遍历到的分辨率的宽高比（注意由于相机的角度问题，这里是高比宽）
                double scale = (double) size.height / size.width;
                //获取到两个比值的差值的绝对值并存储起来
                sortSizeBeans.add(new CameraSizeBean(size,Math.abs(showViewRatio - scale)));
            }
        }
        //对集合进行排序，差值最小的排上面
        Collections.sort(sortSizeBeans);
        if(sortSizeBeans.size() > 0){
            //将差值最小的返回
            return sortSizeBeans.get(0).getSize();
        }else {
            return null;
        }
    }
}
